cap program drop banch
program define banch, eclass
	args varname_banch
		*************************************
		* 変数に含まれる住所の記載をx丁目y番地z号からx－y－zと置き換える
		* last update: 011719
		*************************************
		*format %50s `varname_banch'
		tempvar var
		gen `var' = `varname_banch'
		di as result "(漢数字)丁目->（全角ローマ数字)丁目"
		replace `var' = subinstr(`var', "一丁目", "１丁目",1)
		replace `var' = subinstr(`var', "二丁目", "２丁目",1)
		replace `var' = subinstr(`var', "三丁目", "３丁目",1)
		replace `var' = subinstr(`var', "四丁目", "４丁目",1)
		replace `var' = subinstr(`var', "五丁目", "５丁目",1)
		replace `var' = subinstr(`var', "六丁目", "６丁目",1)
		replace `var' = subinstr(`var', "七丁目", "７丁目",1)
		replace `var' = subinstr(`var', "八丁目", "８丁目",1)
		replace `var' = subinstr(`var', "九丁目", "９丁目",1)
		replace `var' = subinstr(`var', "十丁目", "１０丁目",1)
		replace `var' = subinstr(`var', "十一丁目", "１１丁目",1)

		di as result "xx丁目yy番zz号->xx－yy－zz　等"
		/* Setaside*/
			*号室|棟|館　の号はgoに変えておく
		replace `var' = ustrregexs(1)+"gou"+ustrregexs(2) if ustrregexm(`var', "(.+)号(室|棟|館.+)")
			*番室|棟|館|町　の番はbanに変えておく
		replace `var' = ustrregexs(1)+"ban"+ustrregexs(2) if ustrregexm(`var', "(.+)番(町|室|棟|館.+)")
				
		replace `var' = ustrregexs(1) if ustrregexm(`var', "(.+)番地$") == 1

		replace `var' = ustrregexs(1) +"　" + ustrregexs(2) ///
			if ustrregexm(`var', "(.+[０-９]+－[０-９]+－[０-９]+)号(.+)") == 1	
		replace `var' = ustrregexs(1) +"－" + ustrregexs(2) + "－" + ustrregexs(3) ///
			if ustrregexm(`var', "(.+)丁目(.+)番地*(.+)号$") == 1	
		replace `var' = ustrregexs(1) +"－" + ustrregexs(2) + "－" + ustrregexs(3) + "　" + ustrregexs(4) ///
			if ustrregexm(`var', "(.+)丁目(.+)番地*(.+)号(.+)") == 1		
		replace `var' = ustrregexs(1) +"－" + ustrregexs(2) + "－" + ustrregexs(3) ///
			if ustrregexm(`var', "(.+)丁目(.+)番地の(.+)") == 1		
		replace `var' = ustrregexs(1) +"－" + ustrregexs(2) + "－" + ustrregexs(3) ///
			if ustrregexm(`var', "(.+)丁目(.+)番地ノ(.+)") == 1		
		replace `var' = ustrregexs(1) +"－" + ustrregexs(2) + "－" + ustrregexs(3) ///
			if ustrregexm(`var', "(.+)丁目(.+)番地*([０-９一-十].*)") == 1		
		
		replace `var' = ustrregexs(1) if ustrregexm(`var', "(.+)番地*$") == 1
		
		replace `var' = ustrregexs(1) +"－" + ustrregexs(2) ///
			if ustrregexm(`var', "(.+)丁目(.+)") == 1		
		replace `var' = ustrregexs(1) +"－" + ustrregexs(2) ///
			if ustrregexm(`var', "(.+)番地の(.+)") == 1		
		replace `var' = ustrregexs(1) +"－" + ustrregexs(2) ///
			if ustrregexm(`var', "(.+)番地ノ(.+)") == 1	
		replace `var' = ustrregexs(1) +"－" + ustrregexs(2) ///
			if ustrregexm(`var', "(.+)番地－([０-９].+)") == 1	
		replace `var' = ustrregexs(1) +"－" + ustrregexs(2) ///
			if ustrregexm(`var', "(.+)番地*(.+)号$") == 1	
		replace `var' = ustrregexs(1) +"－" + ustrregexs(2) + ustrregexs(3) ///
			if ustrregexm(`var', "(.+)番地*(.+)号(\s.+)$") == 1
			
		replace `var' = ustrregexs(1) +"－" + ustrregexs(2) ///
			if ustrregexm(`var', "(.+)番地([０-９一-十].*)") == 1
			/* 修正: 千葉県千葉市中央区村田町１１０６－２階　<-　千葉県千葉市中央区村田町１１０６番地２階*/
			replace `var' = ustrregexs(1) +"　" + ustrregexs(2) ///
				if ustrregexm(`var', "(.+)－([０-９]+階)$") == 1		

			
		replace `var' = ustrregexs(1) +"－" + ustrregexs(2) ///
			if ustrregexm(`var', "(.+[０-９]+)番([０-９]+)$") == 1
		*tempvar var
		*gen `var' = ad_firm
		
		replace `var' = ustrregexs(1) +"　" + ustrregexs(2) ///
			if ustrregexm(`var', "(.+[０-９一-十])番地*([^０-９一-十－]+.+)$") == 1
		*replace ad_firm = `var'
	
	di as result "例外、修正"
		/*xx－yy－zzコープaaa -> xx－yy－zz(全角空白)コープaaa*/
		
		replace `var' = ustrregexs(1) +"　" + ustrregexs(2) ///
			if ustrregexm(`var', "(.+[０-９]+－[０-９]+－[０-９]+)([^０-９－]+.+)") == 1
		/*di "ハイフン前後の空白除去"
		*replace `var' = usubinstr(`var', "　－", "－",.)
		*replace `var' = usubinstr(`var', "－　", "－",.)*/
		di "連続ハイフンを一つに"
			count if ustrregexm(`var', "－－")
			while r(N) > 0{
				replace `var' = usubinstr(`var', "－－", "－",.)
				count if ustrregexm(`var', "－－")
			}
		di "全角連続を一つに"
			replace `var' = usubinstr(`var', " ", "　",.) /*半角を全角に*/
			count if ustrregexm(`var', "\s{2}")
			while r(N) > 0{
				replace `var' = ustrregexs(1) + "　" + ustrregexs(2) ///
					if ustrregexm(`var', "(.*)\s{2}(.*)")
				count if ustrregexm(`var', "(.*)\s{2}(.*)")
			}
		di "gou室 -> 号 戻し変換"
		replace `var' = subinstr(`var', "gou", "号",.)
		di "ban町 -> 番 戻し変換"
		replace `var' = subinstr(`var', "ban", "番",.)
		
	replace `varname_banch' = `var'
end 
